c语言~~~`高手来啊 `

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:20:39
6,格式: for (表达式1;表达式2;表达式3)
循环体;
但是循环体到哪里截止呢 ?比如:
#include“stdio.h”
Main ()
{
Printf(“输入一个正数\n”);
Scanf(“%d”,&n);
S(n); /*这里为什么没有定义或者说是声明??或者说是说明,有点搞不懂 这几个 名词 可否 用程序举例,而不是用文字说明*/
Printf(“n=%d\n”,n);
}
Int s(int n)
{
Int i;
For (i=n-1;i>=1;i--) /*书上 说这里是求的是 1+2+3+++++++n, 但我怎么看都觉得是 只能加到n-1呢 ?是书上错了吗*/
n=n+ i; /*最后为什么不用return 返回啊,什么时候才用return 返回主凋函数呢??请用程序举例?~*/
printf(“n=%d\n”,n); /*这里循环体到底是什么 ,而且到底是输出每次n的值,还是输出最后n的值啊??*/
}
请问一下,这里 的实参,形参,是指分别哪个?主调函数,被凋函数又是哪个?
还有 书上有这么一句话,在主函数中调动函数s,将n传给函数s中的n,函数s中的n不断变化,当函数返回时,主函数中的变量n没有变化,这句话怎么解释??说的 单向传递的问题。
哈哈 ,差不多懂了。。。PS------------------------------------
S(n); /*这里为什么没有定义或者说是声明??或者说是说明,有点搞不懂 这几个 名词 可否 用程序举例,而不是用文字说明*/
n=n+ i; /*最后为什么不用return 返回啊,什么时候才用return 返回主凋函数呢??请用程序举例?~*/
这个PY门没有解释得很清楚 呵呵 才自学的C语言 希望朋友们再帮我仔细的说说 ~~谢

1.先说for循环。
for (表达式1;表达式2;表达式3)
循环体;
一般for会带大括号,大括号及以内的内容就是循环体了,当然如果是单条语句也可以不加大括号。
如你的程序中for(i=n-1;i>=1;i--) n=n+i; n=n+i就是就是本例的循环体。printf(“n=%d\n”,n);当然不在循环体之内。如果写成
for(i=n-1;i>=1;i--){
n=n+i;
printf(“n=%d\n”,n);
}
才会输出每个n的值。for的执行顺序是这样的:
表达式1(用于初始化,仅运行一次)->表达式2(条件判断,如果不成立,则循环结束)--如果成立-->循环体->表达式3->表达式2 这样循环,直到条件判断不成立为止,如果条件判断一直成立,那就是死循环,是程序要避免的。

2.再说说形参的改变不会带来实参的改变。

你的程序中,s(n) 的n 是实参,int s(int n)的n是形参。在main()函数中调用了int s(int s)函数。main函数是主调函数,而int s(int n) 是被调函数。

你可以这么理解,你输了一个数,存在变量n中,变量n复制了一个副本带入了int s(int n)中运行,所以这个副本的改变,并没有造成变量n的改变。这是值引用。

还有一种是地址引用,C语言中是指针传递。这个就先不说了,看得出来你的基础不够扎实。说多了也许不好。

补充:s(n) 这里是函数的调用了。下面的 int s(int n)就是对这个函数的定义,或者说是申明。
至于为什么不返回,因为主调函数,即main()里并没有用到这个返回值,如果main()里写了一句 int x = s(n);就是把s(n)的返回值赋值给x了,那在申明s函数时是有必要用return返回一个int型的值的。当然,在你的程序中,最后加上一个return也没有错。

最后:看来你的基础不是不够扎实,是完全没有。心急吃不了热豆腐的。

c语言不是太懂,不过基础语言应该差